Carregant...
 

El sistema n4d.

1. Què és N4D?

 

N4D ve de Network for dummies. És un sistema desenvolupat per LliureX per a facilitar la comunicació entre equips. El N4D ens permet executar de manera remota aplicacions basades en PAM, i ens permet augmentar les seues funcionalitats amb connectors.

 

2. Per què N4D?

 

En el model d'aula de LliureX ens trobem multitud de serveis (DHCP, servidor Web, LDAP, compartició de recursos, etc.). Dins d'aquest model hem de ser capaços de poder configurar una aula de la manera més ràpida i senzilla possible.

El sistema N4D possibilita la comunicació entre clients i servidors amb autenticació, a més proporciona eines a l'usuari avançat per al desenvolupament de connectors i aplicacions client-servidor.

Aquests connectors són Classes N4D que publicaran una sèrie de mètodes o funcions de classe per a la seua execució de manera remota.

 

3. L'eina n4d-client

 

N4D disposa d'una sèrie de comandaments que ens permetran interactuar amb:

n4d-client, n4d-modules, n4d-vars, n4d-create-conf, n4d-server.

Així, per exemple, n4d-client ens permet executar funcions remotes des de la consola del sistema:

 

n4d­client ­-h host [-­u usuari ­-p contrasenya|-­u usuari ­-p contrasenya] -­m mètode -c classe [-­a LlistaArgs]


Així tenim:

 

Opció Funció
host Adreça IP de l’amfitrió que servirà la funció (amfitrió remot).
usuari Usuari de host remot.
contrasenya Contrasenya del host remot.
mètode i classe Funció que volem utilitzar i classe a què pertany.
LlistaArgs Llista de tots els arguments que podem passar a n4d.

 
Així, per exemple, si executem en el servidor la següent ordre:

 

n4d-client -h localhost -c VariablesManager -m listvars

 
Ens eixirà una sèrie de variables (algunes s'han esborrat) que ens permeten conéixer l'estat del servidor. Tingues en compte que pots substituir localhost per la IP de la màquina que vulgues:

 

SRV_IP='10.2.1.254'; PROXY_HOST='proxy'; DEADTIME='15'; SLAVE_BLACKLIST= DNS_UNREG_HOSTNAME_PREFIX='host-'; OPENSYSCLONE_SQUASHFS_PROTOCOL='tftp'; LDAP_BASE_DN='dc=ma5,dc=lliurex,dc=net'; DHCP_FIRST_IP='10.2.1.13'; PROXY_HTTP_PORT='3128'; SAMBA_DOMAIN_NAME='lliurex'; NAME_SERVER_SAMBA='%h'; DNS_EXTERNAL= HTTP_PATH='/var/www/'; INTERNAL_DOMAIN='aula1'; DHCP_LAST_IP='10.2.1.242'; INTERNAL_INTERFACE='eth0'; EXTERNAL_INTERFACE='eth1'; DHCP_DENY_UNKNOWN_CLIENTS='no'; DNS_HOSTNAME_PREFIX='llx-'; INTERNAL_MASK='24'; INTERNAL_NETWORK='10.2.1.0'; STATS_ENABLED='1'; PROXY_MAX_FILE_SIZE='204800'; SAMBASID= ... ZEROCENTER= ... CLIENT_LDAP_URI_NOSSL='ldap://10.2.1.254'; DHCP_HOST_MAX='80'; DHCP_ENABLE='True'; SRV_ALIAS=... HOSTNAME='MACROHPCompaq'; PROXY_ENABLED='True'; CLIENT_LDAP_URI='ldaps://10.2.1.254'; ZEROCENTERINTERNAL='{}'; DHCP_LEASE_TIME='12'; ENABLE_NSS_LDAP='ENABLED'; LLIUREXMIRROR='{u'llx16': {u'exception_msg': u'', u'status_mirror': u'Ok', u'mirror_size': u'14.2580130817', u'progress': 100, u'last_mirror_date': u'24/01/2017'}}';

 

4. Mètodes i classes que es poden usar en LliureX a través d'n4d.

 

Podem conéixer tots els mètodes i classes que es poden usar en n4d amb el paràmetre getmethods:

 

n4d-­client ­-h hostname getmethods

 
Sent hostname la ip de la màquina de què volem conéixer els mètodes disponibles. Si ometem el paràmetre -h hostname, ens trau els mètodes i classes de la nostra màquina:

 

n4d­-client getmethods


La llista que ens apareix és del tipus:

 

[Golem] send_xml_to_server : admin adm admins [FileOperations] get_file_from_server : admin admins teachers [FileOperations] send_file_to_server : admin admins teachers [SlapdManager] delete_serverid : adm admins ... [ApacheManager] backup : adm admins [ApacheManager] reboot_apache : adm admins [ApacheManager] load_exports : adm admins


La llista que ens apareix és bastant llarga si es tracta d'un servidor. Cada línia ve definida de la següent manera:

 

[Classe] Mètode: {llista de grups permesos}


Podem veure que hi ha algunes funcions que només poden ser executades pel grup admin, o teachers (professors) i altres poden ser executades per qualsevol que tinga accés a la màquina (anonymous). Podem conéixer tot el llistat de Classes que hi ha en un servidor:

 

getmethods | cut -f1 -d " " | uniq

 

[Hostname] [LliurexUp] [Golem] [FileOperations] [ZeroServerWizardManager] [ZCenterVariables] [VariablesManager] [TeacherShareManager] [TeacherShare] [TaskMan] [SourcesList] [SocketManager] [SlapdManager] [SignOfLife] [Shutdowner] [ServerBackupManager] [SendFile] [SambaSIDFixer] [SambaManager] [RemoteWebGui] [RemoteGuiManager] [N4dProxy] [PmbManager] [PamnssPlugin] [OpenSysCloneRescue] [OpenSysCloneExport] [OpenSysClone] [NfsManager] [NetworkManager] [NetinstallManager] [NetShareOperations] [NetFoldersManager] [NTicketsManager] [MysqlManager] [MovingProfiles] [MountManager] [MoodleManager] [MirrorManager] [Matrix] [LtspBerryTerminal] [LmdTemplateManager] [LmdServer] [LmdNotifier] [LmdManagerClass] [LmdImageManager] [LmdClientManager] [LmdBootManager] [LlxBootManager] [LliurexVersion] [LliurexOwncloud] [LliurexOpenmeetings] [LliurexGuard] [LliurexBerry] [LessonManager] [IptablesManager] [HomeCleaner] [GuiLauncherManager] [FreeRadiusManager] [FileUtils] [EpoptesServer] [DrValentinCommon] [Dnsmasq] [DiscoverUsers] [CupsManager] [ClientManager] [ClientExeManager] [ApacheManager]

 

5. La classe VariablesManager  i el comandament n4d-vars

 

Com hem vist n4d ens permet gestionar el conjunt de variables d'un sistema. Una de les classes que ens permet gestionar les variables és VariablesManager:

 

n4d-client getmethods | grep VariablesManager

 

Ens dona com a eixida:

 

[VariablesManager] restore : adm admins admin [VariablesManager] listvars : anonymous [VariablesManager] get_variable_list : anonymous [VariablesManager] init_variable : admin admins adm [VariablesManager] add_variable : admin admins adm [VariablesManager] empty_trash : admin admins adm [VariablesManager] get_variables : anonymous [VariablesManager] set_variable : admin admins adm [VariablesManager] get_variable : anonymous [VariablesManager] read_inbox : admin admins adm [VariablesManager] backup : adm admins admin


Com hem vist, per a conéixer totes les variables disponibles en un sistema podem executar:

n4d­client ­-c VariablesManager -­m listvars

Com és una funció bastant utilitzada, disposem també del comandament n4d-vars que ens simplifica l'ús de la classe VariablesManager. Així, si executem:

 

n4d-vars listvars


Ens donarà el mateix resultat que abans. Així mateix, podem veure una variable concreta amb el paràmetre getvalues:

 

LLIUREXMIRROR='{u'llx16': {u'exception_msg': '', u'status_mirror': 'Ok', u'mirror_size': '14.258067918', u'progress': 100, u'last_mirror_date': '30/01/2017'}}';


És per això que ens facilita enormement l'ús d’scripts usant la funció eval. Així, per exemple, podem escriure un script:

 

#!/bin/bash eval $(n4d­-vars getvalues LLIUREXMIRROR) echo $LLIUREXMIRROR exit 0

 

Mastodon E-Mail